function Data= datainput_hmittelmann_I
%from the MINLPLib http://www.gamsworld.org/minlp/minlplib/hmittelman.htm
%replace = by <=0 MINLPLIB

%--------------------------------------------------------------------------
%Copyright (c) 2012 by Juliane Mueller
%
% This file is part of the surrogate model module toolbox.
%
%--------------------------------------------------------------------------
%Author information
%Juliane Mueller
%Tampere University of Technology, Finland
%juliane.mueller2901@gmail.com
%--------------------------------------------------------------------------
%

Data.xlow=zeros(1,16); %variable lower bounds
Data.xup=ones(1,16); %variable upper bounds
%define objective function
Data.objfunction=@(x) (10*x(:,5)*x(:,7)*x(:,9)*x(:,10)*x(:,14)*x(:,15)*x(:,16) + ...
    7*x(:,1)*x(:,2)*x(:,3)*x(:,4)*x(:,8)*x(:,11) +...
    x(:,3)*x(:,4)*x(:,6)*x(:,7)*x(:,8) +...
    12*x(:,3)*x(:,4)*x(:,8)*x(:,11) +...
    8*x(:,6)*x(:,7)*x(:,8)*x(:,12) + ...
    3*x(:,6)*x(:,7)*x(:,9)*x(:,14)*x(:,16) + ...
    x(:,9)*x(:,10)*x(:,14)*x(:,16) + ...
    5 *x(:,5)*x(:,10)*x(:,14)*x(:,15)*x(:,16) + ...
    3*x(:,1)*x(:,2)*x(:,11)*x(:,12));
%define constraints
Data.constraint{1}=@(x)3*x(:,5)*x(:,7)*x(:,9)*x(:,10)*x(:,14)*x(:,15)*x(:,16) -...
    12*x(:,1)*x(:,2)*x(:,3)*x(:,4)*x(:,8)*x(:,11) - ...
    8*x(:,3)*x(:,4)*x(:,6)*x(:,7)*x(:,8) + ...
    x(:,3) *x(:,4)*x(:,8)*x(:,11) -...
    7*x(:,1)*x(:,2)*x(:,11)*x(:,12) + ...
    2*x(:,13)*x(:,14)*x(:,15)*x(:,16) +2;
Data.constraint{2}=@(x) x(:,1)*x(:,2)*x(:,3)*x(:,4)*x(:,8)*x(:,11) - ...
    10*x(:,3)*x(:,4)*x(:,6)*x(:,7)*x(:,8) -...
    5*x(:,6)*x(:,7)*x(:,8)*x(:,12) +...
    x(:,6)*x(:,7)*x(:,9)*x(:,14)*x(:,16) +...
    7*x(:,9)*x(:,10)*x(:,14)*x(:,16) + ...
    x(:,5)*x(:,10)*x(:,14)*x(:,15)*x(:,16) +1;
Data.constraint{3}=@(x) 5*x(:,5)*x(:,7)*x(:,9)*x(:,10)*x(:,14)*x(:,15)*x(:,16) - ...
    3*x(:,1)*x(:,2)*x(:,3)*x(:,4)*x(:,8)*x(:,11) - ...
    x(:,3)*x(:,4)*x(:,6)*x(:,7)*x(:,8) -...
    2*x(:,5)* x(:,10)*x(:,14)*x(:,15)*x(:,16) +...
    x(:,13)*x(:,14)*x(:,15)*x(:,16) +1;
Data.constraint{4}=@(x) 3*x(:,1)*x(:,2)*x(:,3)*x(:,4)*x(:,8)*x(:,11) - ...
    5*x(:,5)*x(:,7)*x(:,9)*x(:,10)*x(:,14)*x(:,15)*x(:,16) + ...
    x(:,3)*x(:,4)*x(:,6)*x(:,7)*x(:,8) +...
    2*x(:,5)* x(:,10)*x(:,14)*x(:,15)*x(:,16) -...
    x(:,13)*x(:,14)*x(:,15)*x(:,16) -1;
Data.constraint{5}=@(x) (-4*x(:,3)*x(:,4)*x(:,6)*x(:,7)*x(:,8)) - ...
    2*x(:,3)*x(:,4)*x(:,8)*x(:,11) - ...
    5*x(:,6)*x(:,7)*x(:,9)*x(:,14)*x(:,16) +...
    x(:,9)*x(:,10)*x(:,14)*x(:,16) -...
    9*x(:,5)*x(:,10)*x(:,14)*x(:,15)*x(:,16) -...
    2*x(:,1)*x(:,2)*x(:,11)*x(:,12) +3; 
Data.constraint{6}=@(x) 9*x(:,1)*x(:,2)*x(:,3)*x(:,4)*x(:,8)*x(:,11) - ...
    12*x(:,3)*x(:,4)*x(:,8)*x(:,11) - 7*x(:,6)*x(:,7)*x(:,8)*x(:,12) +...
    6*x(:,6)*x(:,7)*x(:,9)*x(:,14)* x(:,16) + ...
    2*x(:,5)*x(:,10)*x(:,14)*x(:,15)*x(:,16) -...
    15*x(:,1)*x(:,2)*x(:,11)*x(:,12) + ...
    3*x(:,13)*x(:,14)*x(:,15)*x(:,16) +7; 
Data.constraint{7}=@(x) 5*x(:,1)*x(:,2)*x(:,3)*x(:,4)*x(:,8)*x(:,11) -...
    8*x(:,5)*x(:,7)*x(:,9)*x(:,10)*x(:,14)*x(:,15)*x(:,16) + ...
    2*x(:,3)*x(:,4)*x(:,6)*x(:,7)*x(:,8) - ...
    7* x(:,3)*x(:,4)*x(:,8)*x(:,11) -...
    x(:,6)*x(:,7)*x(:,8)*x(:,12) - ...
    5*x(:,9)*x(:,10)*x(:,14)*x(:,16) - ...
    10*x(:,1)*x(:,2)*x(:,11)*x(:,12) +1;
Data.dim=16; %problem dimension
Data.integer =(1:16); %indices of integer variables
Data.continuous =[]; %indices of continuous variables
end %function